home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / var / lib / dpkg / info / cups.postinst < prev    next >
Text File  |  2009-10-31  |  9KB  |  245 lines

  1. #! /bin/sh
  2. # postinst script for cups
  3. #
  4. # see: dh_installdeb(1)
  5.  
  6. set -e
  7.  
  8. # summary of how this script can be called:
  9. #        * <postinst> `configure' <most-recently-configured-version>
  10. #        * <old-postinst> `abort-upgrade' <new version>
  11. #        * <conflictor's-postinst> `abort-remove' `in-favour' <package>
  12. #          <new-version>
  13. #        * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
  14. #          <failed-install-package> <version> `removing'
  15. #          <conflicting-package> <version>
  16. # for details, see /usr/doc/packaging-manual/
  17. #
  18. # quoting from the policy:
  19. #     Any necessary prompting should almost always be confined to the
  20. #     post-installation script, and should be protected with a conditional
  21. #     so that unnecessary prompting doesn't happen if a package's
  22. #     installation fails and the `postinst' is called with `abort-upgrade',
  23. #     `abort-remove' or `abort-deconfigure'.
  24.  
  25. # Debconf
  26. . /usr/share/debconf/confmodule
  27.  
  28. # Default Configuration file
  29. if [ -e /etc/default/cups ]; then
  30.     . /etc/default/cups
  31. fi
  32.  
  33. if [ "$1" = configure ]; then
  34.     # Set up lpadmin group.
  35.     if [ -z "`getent group lpadmin`" ]; then 
  36.     addgroup --system lpadmin
  37.     fi
  38.  
  39.     if [ -L /usr/share/ppd/cups-transitional-dir ]; then
  40.     rm -f /usr/share/ppd/cups-transitional-dir
  41.     fi
  42.     if [ -L /usr/share/cups/model/cups-included ]; then
  43.     rm -f /usr/share/cups/model/cups-included
  44.     fi
  45.  
  46.     # Generate raw MIME handling files if they don't already exist.
  47.     if [ ! -e /etc/cups/raw.types ]; then
  48.     cat >/etc/cups/raw.types <<EOF
  49. # This file was generated by the cups package.  You may change it, or
  50. # reconfigure this file with dpkg-reconfigure.  If it is removed, it
  51. # will be regenerated by the package scripts.
  52.  
  53. application/octet-stream
  54. EOF
  55.     fi
  56.     if [ ! -e /etc/cups/raw.convs ]; then
  57.     cat >/etc/cups/raw.convs <<EOF
  58. # This file was generated by the cups package.  You may change it, or
  59. # reconfigure this file with dpkg-reconfigure.  If it is removed, it
  60. # will be regenerated by the package scripts.
  61.  
  62. application/octet-stream    application/vnd.cups-raw    0    -
  63. EOF
  64.     fi
  65.  
  66.     # Set up raw printing of application/octet-stream if desired.
  67.     db_fget cupsys/raw-print changed
  68.     if [ "$RET" = "true" ]; then
  69.     mv /etc/cups/raw.convs /etc/cups/raw.convs-convert
  70.     db_get cupsys/raw-print
  71.     if [ "$RET" = "true" ]; then
  72.         sed 's/^\s*#\s*application/application/' \
  73.         < /etc/cups/raw.convs-convert > /etc/cups/raw.convs
  74.     else
  75.         sed 's/^application/#application/' \
  76.         < /etc/cups/raw.convs-convert > /etc/cups/raw.convs
  77.     fi
  78.     rm -f /etc/cups/raw.convs-convert
  79.     db_fset cupsys/raw-print changed false
  80.     fi
  81.     # Set up backends
  82.     db_get cupsys/backend && SELECTED=$RET
  83.     list=`echo $SELECTED | sed -e 's/, /,/g'`
  84.     save_IFS=$IFS
  85.     IFS=,
  86.     (cd /usr/lib/cups/backend && rm -f http ipp lpd parallel scsi serial socket usb snmp dnssd)
  87.     for module in $list; do
  88.       ln /usr/lib/cups/backend-available/$module /usr/lib/cups/backend/$module
  89.       if [ "$module" = "ipp" ]; then
  90.     ln /usr/lib/cups/backend/ipp /usr/lib/cups/backend/http
  91.       fi
  92.     done
  93.     IFS=$save_IFS
  94.  
  95.     # activate new backends on upgrades
  96.     db_fset cupsys/backend changed false
  97.     
  98.     if dpkg --compare-versions "$2" lt-nl "1.3.4-2"; then
  99.     for module in snmp scsi serial dnssd; do
  100.         [ -e /usr/lib/cups/backend/$module ] || \
  101.         ln /usr/lib/cups/backend-available/$module /usr/lib/cups/backend/$module
  102.     done
  103.     fi
  104.     
  105.     # Resync Debconf database with real state
  106.     list=`( cd /usr/lib/cups/backend && for f in ipp lpd parallel scsi serial socket usb snmp dnssd; do [ -e $f ] && echo -n "$f, "; done ) | sed -e 's/, $//'`
  107.     db_set cupsys/backend $list;
  108.  
  109.     if [ -f /etc/cups/classes.conf ]; then
  110.       chown root:lp /etc/cups/classes.conf ; chmod 600 /etc/cups/classes.conf
  111.     fi
  112.     if [ -f /etc/cups/printers.conf ]; then
  113.       chown root:lp /etc/cups/printers.conf ; chmod 600 /etc/cups/printers.conf
  114.     fi
  115.  
  116.     # symlink snakeoil SSL certificate if present
  117.     if [ -e /etc/ssl/certs/ssl-cert-snakeoil.pem -a \
  118.       -e /etc/ssl/private/ssl-cert-snakeoil.key -a \
  119.       -n "`getent group ssl-cert`" -a ! -e /etc/cups/ssl/server.crt -a \
  120.       ! -e /etc/cups/ssl/server.key ]; then
  121.      ln -s /etc/ssl/certs/ssl-cert-snakeoil.pem /etc/cups/ssl/server.crt
  122.      ln -s /etc/ssl/private/ssl-cert-snakeoil.key /etc/cups/ssl/server.key
  123.     fi 
  124.  
  125.     # Remove shutdown and reboot links; this init script does not need them.
  126.     if dpkg --compare-versions "$2" lt-nl "1.3.6-2"; then
  127.     rm -f /etc/rc0.d/K??cups /etc/rc6.d/K??cups
  128.     fi
  129.  
  130.     # Reload AppArmor profile if present
  131.     APP_PROFILE="/etc/apparmor.d/usr.sbin.cupsd"
  132.     if [ -f "$APP_PROFILE" ] && aa-status --enabled 2>/dev/null; then
  133.     apparmor_parser -r "$APP_PROFILE" || true
  134.     fi
  135.  
  136.     # init.d priority transition
  137.     if dpkg --compare-versions "$2" le-nl "1.3.9-15"; then
  138.     for l in 2 3 4 5; do
  139.         old=/etc/rc${l}.d/S20cups
  140.         new=/etc/rc${l}.d/S50cups
  141.         if [ -e "$old" ] && [ ! -e "$new" ]; then
  142.         mv "$old" "$new"
  143.         fi
  144.     done
  145.     fi
  146.  
  147.     # Clear cache if we upgrade to 1.4.x
  148.     if dpkg --compare-versions "$2" lt-nl "1.4.1-5"; then
  149.     rm /var/cache/cups/* 2> /dev/null || :
  150.     fi
  151.  
  152.     # Manage printcap file and associated symlinks
  153.     if [ -e /etc/cups/cupsd.conf ]; then
  154.     if [ -e /etc/printcap.cups ]; then
  155.         rm -f /etc/printcap.cups
  156.     fi
  157.     if [ -L /etc/printcap -a ! -e /etc/printcap ]; then
  158.         rm -f /etc/printcap
  159.     fi
  160.  
  161.     printcap_file=`egrep '^Printcap ' /etc/cups/cupsd.conf | awk '{print $2}' | tail -n 1`
  162.     if [ -z "$printcap_file" ]; then
  163.         printcap_file=/var/run/cups/printcap
  164.     fi
  165.     if [ ! -e /etc/printcap -a -e $printcap_file ]; then
  166.         ln -s $printcap_file /etc/printcap
  167.     fi
  168.     fi
  169. fi
  170.  
  171. # Automatically added by dh_installinit
  172. if [ -x "/etc/init.d/cups" ]; then
  173.     update-rc.d cups start 50 2 3 4 5 . stop 80 1 . >/dev/null
  174.     if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then
  175.         invoke-rc.d cups start || exit $?
  176.     else
  177.         /etc/init.d/cups start || exit $?
  178.     fi
  179. fi
  180. # End automatically added section
  181. # Automatically added by dh_usrlocal
  182. if [ "$1" = configure ]; then
  183. (
  184.     while read line; do
  185.         set -- $line
  186.         dir="$1"; mode="$2"; user="$3"; group="$4"
  187.         if [ ! -e "$dir" ]; then
  188.             if mkdir "$dir" 2>/dev/null; then
  189.                 chown "$user":"$group" "$dir"
  190.                 chmod "$mode" "$dir"
  191.             fi
  192.         fi
  193.     done
  194. ) << DATA
  195. /usr/local/share 2775 root staff
  196. /usr/local/share/ppd 2775 root staff
  197. DATA
  198. fi
  199. # End automatically added section
  200.  
  201.  
  202. # Do the following only if CUPS is running and the needed CUPS tools
  203. # are available
  204. if [ "$1" = configure ] && \
  205.     which lpstat > /dev/null 2>&1 && \
  206.     which lpinfo > /dev/null 2>&1 && \
  207.     which lpadmin > /dev/null 2>&1 && \
  208.     LC_ALL=C lpstat -h /var/run/cups/cups.sock -r | grep -v not > /dev/null 2>&1; then
  209.     # Update the PPD files of all already installed print queues
  210.     driverregexp='lsb/usr/cups-included/|drv:///sample.drv/'
  211.     gennicknameregexp='s/,\s*\d+\.\d+[\d\.]*$//i'
  212.     [ ! -z "$gennicknameregexp" ] && \
  213.     gennicknameregexp="; $gennicknameregexp"
  214.     gennicknameregexp='s/\s*\(recommended\)//'"$gennicknameregexp"
  215.     tempfiles=
  216.     trap 'rm -f $tempfiles; exit 0' 0 HUP INT QUIT ILL ABRT PIPE TERM
  217.     tmpfile1=`mktemp -t updateppds.XXXXXX`
  218.     tempfiles="$tempfiles $tmpfile1"
  219.     lpinfo -h /var/run/cups/cups.sock -m | grep -E $driverregexp > $tmpfile1
  220.     cd /etc/cups/ppd
  221.     for ppd in *.ppd; do
  222.     [ -r "$ppd" ] || continue
  223.     queue=${ppd%.ppd}
  224.     lpstat -h /var/run/cups/cups.sock -p "$queue" >/dev/null 2>&1 || continue
  225.     nickname=`grep '\*NickName:' "$ppd" | cut -d '"' -f 2 | perl -p -e 's/\n$//' | perl -p -e "$gennicknameregexp" | perl -p -e 's/(\W)/\\\\$1/g'`
  226.     lang=`grep '\*LanguageVersion:' "$ppd" | cut -d ' ' -f 2 | perl -e 'print lc(<>)' | perl -p -e 's/[\r\n]//gs'`
  227.     ppdfound="0"
  228.     englishppduri=""
  229.     tmpfile2=`mktemp -t updateppds.XXXXXX`
  230.     tempfiles="$tempfiles $tmpfile2"
  231.     cat $tmpfile1 | perl -p -e "$gennicknameregexp" | grep -i "$nickname"'$' | cut -d ' ' -f 1 > $tmpfile2
  232.     while read newppduri; do
  233.         [ "$ppdfound" = "0" ] && lpadmin -h /var/run/cups/cups.sock -p "$queue" -m $newppduri 2>/dev/null || continue
  234.         newlang=`grep '\*LanguageVersion:' "$ppd" | cut -d ' ' -f 2 | perl -e 'print lc(<>)' | perl -p -e 's/[\r\n]//gs'`
  235.         [ "$newlang" = "$lang" ] && ppdfound="1"
  236.         [ "$newlang" = "english" ] && englishppduri="$newppduri"
  237.     done < $tmpfile2
  238.     [ "$ppdfound" = "0" ] && [ ! -z "$englishppduri" ] && lpadmin -h /var/run/cups/cups.sock -p "$queue" -m $englishppduri 2>/dev/null && ppdfound="1"
  239.     [ "$ppdfound" = "1" ] && echo PPD for printer $queue updated >&2
  240.     done
  241. fi
  242.  
  243. db_stop
  244. exit 0
  245.